// utils/request.js
import Request from "@/lib/luch-request/index.js";
import {
	baseUrl,
	getToken
} from "./app.js"
// 创建实例
const instance = new Request({
	baseURL: baseUrl,
	timeout: 30000,
	header: {
		'Content-Type': 'application/json'
	}
})

// 请求拦截器
instance.interceptors.request.use(
	config => {
		// 添加默认参数（示例：添加时间戳）
		// let lang = uni.getStorageSync('Lang') || 'zh-Hans';
		// console.log(lang, lang == 'zh-Hans')
		// const defaultParams = {
		// 	langueType: lang == 'zh-Hans' ? 1 : 2
		// }

		// 根据请求方法合并参数
		if (config.method === 'GET') {
			config.params = {
				// ...defaultParams,
				...config.params
			}
		} else {
			config.data = {
				// ...defaultParams,
				...config.data
			}
		}

		// 添加token（示例）
		const token = uni.getStorageSync('token').token
		if (token) {
			config.header.Authorization = `${token}`
		}

		return config
	},
	error => {
		return Promise.reject(error)
	}
)

// 响应拦截器
instance.interceptors.response.use(
	async (response) => {
			const res = response
			console.log(res, '【封装请求】')
			// 处理特定业务code
			if (res.data.code === -1) {
				// handleReLogin()
				await getToken();
				// console.log('-1重新请求token', res.data)
				instance.request(response.config)
				return Promise.reject(res)
			}

			if ([401, 403, 500, 502].includes(res.data.code)) {
				showServerErrorModal()
				return Promise.reject(res)
			}
			// 其他成功状态处理
			if (res.data.code === 1 || res.data.code === 200 || res.data.code == 0) {
				return res
			}

			return Promise.reject(res)
		},
		error => {
			// 处理HTTP错误
			if (error.response) {
				const status = error.response.status
				if ([401, 403, 500, 502].includes(status)) {
					showServerErrorModal()
				}
			} else {
				// console.error(error, '123')
				// uni.showToast({
				// 	title: '网络连接异常',
				// 	icon: 'none'
				// })
			}
			return Promise.reject(error)
		}
)

// 重新登录处理
function handleReLogin() {
	// 清除登录状态
	uni.removeStorageSync('token')
	// 跳转到登录页

}

// 显示服务器错误弹窗
function showServerErrorModal() {
	uni.showModal({
		title: '提示',
		content: '服务器异常，请联系管理员',
		showCancel: false,
		confirmText: '确定',
		success: () => {
			// 可添加额外处理逻辑
		}
	})
}

// 封装常用方法
export const http = {
	get(url, params, config = {}) {
		return instance.request({
			url,
			method: 'GET',
			params,
			...config
		})
	},

	post(url, data, config = {}) {
		return instance.request({
			url,
			method: 'POST',
			data,
			...config
		})
	},

	put(url, data, config = {}) {
		return instance.request({
			url,
			method: 'PUT',
			data,
			...config
		})
	},

	delete(url, params, config = {}) {
		return instance.request({
			url,
			method: 'DELETE',
			params,
			...config
		})
	}
}

export default instance